package com.springcloud.eureka.config.ribbon;

import com.netflix.loadbalancer.*;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class RestConfig {

    //默认轮询
    @Bean
    @LoadBalanced
    RestTemplate restTemplate() {
        return new RestTemplate();
    }
    // 会先按照轮询获取服务~，如果服务获取失败，则会在指定的时间内进行，重试
    @Bean
    IRule rule(){
        return new RetryRule();
    }
    //随机访问
    /*@Bean
    IRule rule(){
        return new RandomRule();
    }*/
    // 最少并发数策略,选择正在请求中并发数量小的provider，除非这个provider在熔断中
    /*@Bean
    IRule rule(){
        return new BestAvailableRule();
    }*/
    //权重轮询，根据响应时间分配权重
    /*@Bean
    IRule rule(){
        return new WeightedResponseTimeRule();
    }*/
}
